package com.example.demo.sf;

import org.apache.commons.math3.fitting.leastsquares.EvaluationRmsChecker;

import java.util.LinkedList;
import java.util.List;

/**
 * 汉诺塔
 */
public class HanNuota {
    //定义三个集合 代表汉诺塔的三个柱子
    private static List<Integer> a =new LinkedList<>();
    private static List<Integer> b =new LinkedList<>();
    private static List<Integer> c =new LinkedList<>();

    //初始化第一个柱子，假设有3个圆盘
   private  static  void init(int n){
       for (int i = n; i > 0; i--){
           a.addLast( i);
       }
   }

   /*开始处理移动的逻辑
   * 假如有两个圆盘  先把1号圆盘移动到2号柱子 也就是 a--->b ,然后把2号圆盘移动到3号柱子也就是 a --->c 最后把1号圆盘移动到3号柱子也就是 b--->c
   *
   * */
    private static void move(int n, List<Integer> a, List<Integer> b, List<Integer> c){
       if (n > 0){
           move(n - 1, a, c, b);
           c.addLast(a.removeLast());
           extracted(a, b, c);
           move(n - 1, b, a, c);
       }

    }

    private static void extracted(List<Integer> a, List<Integer> b, List<Integer> c) {
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println("------------------");
    }

    public static void main(String[] args) {
        init(3);
        extracted(a, b, c);
        move(3, a, b, c);
        while (true){}
    }
}
